package demo1;

//public class Main {
//    public static void main(String[] args) {
//        System.out.println("I'm gonna win! Today!");
//        System.out.println("2022-04-23");
//    }
//}
//
//import java.util.Scanner;
//
//public class Main {
//    public static void main(String[] args) {
//        Scanner scanner = new Scanner(System.in);
//        int n = scanner.nextInt();
//        int v = scanner.nextInt();
//        System.out.println(n/v);
//    }
////}
//
//import java.util.Scanner;
//
//public class Main {
//    public static void main(String[] args) {
//        Scanner scanner = new Scanner(System.in);
//        int a = scanner.nextInt(); //禁入年龄线
//        int b = scanner.nextInt(); //陪同年龄线
//        int c = scanner.nextInt(); //1
//        int d = scanner.nextInt(); //2
//        //两人必须一起进
//        if(c < a && d >= b) {
//            System.out.println(c+"-Y "+d +"-Y");
//            System.out.println("qing 2 zhao gu hao 1");
//        }else if(d < a && c >= b) {
//            System.out.println(c+"-Y "+d +"-Y");
//            System.out.println("qing 1 zhao gu hao 2");
//        }
//        //两人都可以进
//        if(c >= a && d >= a) {
//            System.out.println(c+"-Y "+d +"-Y");
//            System.out.println("huan ying ru guan");
//        }
//        //只能进c
//        if(c>=a && c < b && d<a) {
//            System.out.println(c+"-Y "+d +"-N");
//            System.out.println("1: huan ying ru guan");
//        }else if(d >= a && d < b && c<a) {
//            //只能进d
//            System.out.println(c+"-N "+d +"-Y");
//            System.out.println("2: huan ying ru guan");
//        }
//        //都不能进
//        if(c < a && d<a) {
//            System.out.println(c+"-N "+d +"-N");
//            System.out.println("zhang da zai lai ba");
//        }
//    }
//}
//
//import java.util.Scanner;
//
//public class Main {
//    public static void main(String[] args) {
//        Scanner scanner = new Scanner(System.in);
//        int a = scanner.nextInt();
//        int b = scanner.nextInt();
//        int sum = 1;
//        for(int i = 1; i<=a+b; i++){
//            sum*=i;
//        }
//        System.out.println(sum);
//    }
//}
//
//import java.util.Scanner;
//
//public class Main {
//    public static void main(String[] args) {
//        Scanner scanner = new Scanner(System.in);
//        int[] arr = new int[6];
//        for(int i = 0; i<6;i ++) {
//            arr[i] = scanner.nextInt();
//        }
//        int n = scanner.nextInt();
//        for(int i =0; i<6; i++) {
//            if(6-n >= arr[i]) {
//                arr[i] = 6-n+1;
//            }else {
//                arr[i] -= n-6+arr[i];
//            }
//        }
//        for(int i =0; i<6; i++) {
//            System.out.print(arr[i]);
//            if(i<5) System.out.print(" ");
//        }
//    }
//}
//
//import java.util.Scanner;
//
//public class Main {
//    public static void main(String[] args) {
//        Scanner scanner = new Scanner(System.in);
//        String str1 = scanner.next();
//        String str2 = scanner.next();
//        String res1 = f(str1);
//        String res2 = f(str2);
//        if(res1.equals(res2)) {
//            System.out.println(res1);
//        }else {
//            System.out.println(res1);
//            System.out.println(res2);
//        }
//    }
//    public static String f(String str) {
//        StringBuffer res = new StringBuffer();
//        for(int i = 1; i<str.length(); i++) {
//            if(str.charAt(i)%2==str.charAt(i-1)%2) {
//                char ch = (char)Math.max((int)str.charAt(i),(int)str.charAt(i-1));
//                res.append(ch);
//            }
//        }
//        return res.toString();
//    }
//}
//
//import java.util.Scanner;
//
//public class Main {
//    public static void main(String[] args) {
//        Scanner scanner = new Scanner(System.in);
//        int n = scanner.nextInt();
//        int m = scanner.nextInt();
//        int q = scanner.nextInt();
//        boolean[][] map = new boolean[n+1][m+1];
//        while(q-- > 0) {
//            int a = scanner.nextInt();
//            int b= scanner.nextInt();
//            if(a == 0) {
//                for(int i = 1; i<=m; i++) {
//                    map[b][i] = true;
//                }
//            }else {
//                for(int i = 1; i<=n; i++) {
//                    map[i][b] = true;
//                }
//            }
//        }
//        int sum = 0;
//        for(int i = 1; i<=n; i++) {
//            for(int j = 1; j<=m; j++) {
//                if(!map[i][j]) sum++;
//            }
//        }
//        System.out.println(sum);
//    }
//}
//
//import java.io.*;
//import java.util.*;
//
//public class Main {
//    public static class Stu {
//        public int a;
//        public int b;
//        public boolean st;
//    }
//    public static void main(String[] args) throws IOException {
//        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
//        PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.out));
//        String[] value = bufferedReader.readLine().split(" ");
//        int n = Integer.parseInt(value[0]);
//        int k = Integer.parseInt(value[1]);
//        int st = Integer.parseInt(value[2]);
//        List<Stu> list = new ArrayList<>();
//        for(int i = 0; i<n; i++) {
//            value = bufferedReader.readLine().split(" ");
//            Stu stu = new Stu();
//            stu.a = Integer.parseInt(value[0]);
//            stu.b = Integer.parseInt(value[1]);
//            if(stu.a >= 175) {
//                list.add(stu);
//            }
//        }
//
//        Collections.sort(list,(a,b)->a.a-b.a);
//
//        int sum = 0;
//
//        while(k-- > 0) {
//            int i = 0;
//            int preScore = -1; //前一个人的分数
//            while(i<list.size())  {
//                if(list.get(i).st) {
//                    i++;
//                }else {
//                    if(list.get(i).a != preScore || (list.get(i).a == preScore && list.get(i).b >= st)) {
//                        sum++;
//                        list.get(i).st = true;
//                        preScore = list.get(i).a; //更新分数
//                    }
//                    i++;
//                }
//            }
//        }
//        pw.println(sum);
//        pw.flush();
//    }
//}
//
//import java.util.Scanner;
//
//public class Main {
//    public static void main(String[] args) {
//        Scanner scanner = new Scanner(System.in);
//        int n = scanner.nextInt();
//        int k = scanner.nextInt();
//        int score = scanner.nextInt();
//        int[] arr = new int[300];
//        int count =0;
//        for(int i = 0; i<n; i++) {
//            int a = scanner.nextInt();
//            int b = scanner.nextInt();
//            if(a >= 175 && b < score) {
//                arr[a] ++;
//            }else if(a >= 175 && b >= score) {
//                count++;
//            }
//        }
//
//        int ret = 0;
//        for(int i = 175; i<300; i++) {
//            ret += Math.min(k,arr[i]);
//        }
//        ret += count;
//        System.out.println(ret);
//    }
//}


import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        int k = scanner.nextInt();

        List<Integer> pusher = new LinkedList<>();//推送器
        List<Integer> box = new LinkedList<>(); //盒子
        List<Integer> good = new LinkedList<>();

        for (int i = 0; i < n; i++) {
            int a = scanner.nextInt();
            pusher.add(a);
        }

        while (!pusher.isEmpty() || !box.isEmpty()) {
            //新的松枝干
            if (good.isEmpty()) {
                //小盒子为空
                if (box.isEmpty()) {
                    good.add(pusher.get(0));
                    pusher.remove(0);
                } else {
                    good.add(box.get(box.size() - 1));
                    box.remove(box.size() - 1);
                }
            } else { //旧枝干
                //1.从盒子里拿
                //2.从推送器拿
                //3.都不满足条件就出成品

                //1.从盒子里拿
                if (!box.isEmpty() && box.get(box.size() - 1) <= good.get(good.size() - 1)) {
                    good.add(box.get(box.size() - 1));
                    box.remove(box.size() - 1);
                } else if (!pusher.isEmpty() && pusher.get(0) <= good.get(good.size() - 1)) {
                    good.add(pusher.get(0));
                    pusher.remove(0);
                } else if (!pusher.isEmpty() && pusher.get(0) > good.get(good.size() - 1)) {
                    box.add(pusher.get(0));
                    pusher.remove(0);
                } else {
                    //出成品
                    print(good, true);
                    good = new LinkedList<>();
                }
            }
            //判断是否出成品
            if (good.size() >= k || (box.size() >= m && pusher.get(pusher.size()-1) > good.get(good.size()-1)) || (pusher.isEmpty() && !box.isEmpty() && box.get(box.size() - 1) > good.get(good.size() - 1))) {
                print(good, true);
                good = new LinkedList<>();
            }
        }
        print(good,false);
    }
    public static void print(List<Integer> good, boolean k) {
        for (int i = 0; i < good.size(); i++) {
            System.out.print(good.get(i));
            if (i < good.size() - 1) {
                System.out.print(" ");
            }
        }
        if(k) System.out.println();
    }
}